package com.yunzheng.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yunzheng.dto.ChangeProjectInfoDTO;
import com.yunzheng.dto.NewProjectDTO;
import com.yunzheng.entity.Project;
import com.yunzheng.vo.MyProjectListVO;
import com.yunzheng.vo.ProjectContentVO;
import com.yunzheng.vo.ProjectListVO;

import java.util.List;

/**
 * @author 郭思良
 * @create 2020-07-23 15:38
 *
 */

public interface ProjectService extends IService<Project> {


    /**
     * 新增项目
     * @param input 项目信息
     */
    void postNewProject(NewProjectDTO input);

    /**
     * 展示所有项目信息
     * @param offset 分页的页数
     * @return ProjectVO 项目列表
     */
    List<ProjectListVO> listAllProjects(Integer offset);

    /**
     * 根据 项目id、项目名称、团队名、甲方、项目负责人 等信息进行搜索。
     * @param projects 搜索到的项目id的list
     * @return ProjectVO 项目列表
     */
    List<ProjectListVO> listProjectsByKey(List<Project> projects);

    /**
     * 展示该项目的具体信息
     * @param projectId 项目id
     * @return 返回项目的具体信息
     */
    ProjectContentVO showProjectContent(String projectId);

    /**
     * 对项目列表的基本信息进行修改
     * @param input 修改项目的基本信息
     */
    void changeProjectInfo(ChangeProjectInfoDTO input);

    /**
     * 我所参与的项目
     * @param userId  用户id
     * @return 项目信息
     */
    List<MyProjectListVO> myJoinProject(String userId);

    /**
     * 我所负责的项目
     * @param userId  用户id
     * @return 项目信息
     */
    List<MyProjectListVO> myResponsibleProject(String userId);

    /**
     * 删除项目接口
     * @param projectId 要删除的项目id
     */
    void removeProject(String projectId);

    /**
     * 批量删除项目接口
     * @param projectIds 要删除的项目id
     */
    void removeProjects(List<String> projectIds);

    /**
     * 我的多项目管理
     * @param userId 我的用户id
     * @return 返回项目列表
     */
    List<ProjectListVO> listMyProjects(String userId);
}

